home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / percnt.zip / PERCENTC.PAS < prev    next >
Pascal/Delphi Source File  |  1991-11-11  |  2KB  |  65 lines

  1. Unit PercentCtrl;
  2. Interface
  3.   Uses WinTypes, WinProcs, WObjectB;
  4.  
  5.   type
  6.     PPercentCtrl = ^TPercentCtrl;
  7.     TPercentCtrl = object (TControl)
  8.                      function  GetClassName:  PChar;                    virtual;
  9.                      procedure Add(Pct:  integer);
  10.                      function  Percent:  integer;
  11.                      procedure SetIt(Pct:  integer);
  12.                      procedure Reset;
  13.                    end;
  14.  
  15.   procedure CenterPopup(HWindow:  HWnd; DC:  HDC);
  16.  
  17. Implementation
  18.  
  19.   const
  20.     Pct_Decades :  longint = $01;    { Place tick marks & % values every 10% }
  21.     Pct_Quarters:  longint = $02;    { Place tick marks & % values every 25% }
  22.     Pct_Halves  :  longint = $04;    { Place tick marks & % values every 50% }
  23.     Pct_Axis    :  longint = $08;    { Draw the tick marks on the control }
  24.     Pct_Digits  :  longint = $10;    { Draw the percentage in the middle of the control }
  25.  
  26.     Pct_Name = 'PercentCtrl';        { Class name for the new control }
  27.  
  28.             { Define window messages }
  29.  
  30.     pcm_ResetPercent = wm_User + 1;    { Message to cause control to reset % to 0 }
  31.     pcm_AddPercent   = wm_User + 2;    { Message to cause control to add x % }
  32.     pcm_GetPercent   = wm_User + 3;    { Message to cause control to return its current setting }
  33.     pcm_SetPercent   = wm_User + 4;    { Message to cause control to set itself to x% }
  34.                     { Control Style Dialog box identifiers }
  35.     PctMask:  longint = $FFFFFFF8;
  36.  
  37.   procedure CenterPopup(HWindow:  HWnd; DC:  HDC); external 'CtrlDLL';
  38.  
  39.   function TPercentCtrl.GetClassName:  PChar;
  40.     begin       { TPercentCtrl.GetClassName }
  41.       GetClassName := Pct_Name
  42.     end         { TPercentCtrl.GetClassName };
  43.  
  44.   procedure TPercentCtrl.Add(Pct:  integer);
  45.     begin       { TPercentCtrl.Add }
  46.       SendMessage(HWindow, pcm_AddPercent, Pct, 0)
  47.     end         { TPercentCtrl.Add };
  48.  
  49.   function TPercentCtrl.Percent:  integer;
  50.     begin       { TPercentCtrl.Percent }
  51.       Percent := LoWord(SendMessage(HWindow, pcm_GetPercent, 0, 0))
  52.     end         { TPercentCtrl.Percent };
  53.  
  54.   procedure TPercentCtrl.SetIt(Pct:  integer);
  55.     begin       { TPercentCtrl.SetIt }
  56.       SendMessage(HWindow, pcm_SetPercent, Pct, 0);
  57.     end         { TPercentCtrl.SetIt };
  58.  
  59.   procedure TPercentCtrl.Reset;
  60.     begin       { TPercentCtrl.Reset }
  61.       SendMessage(HWindow, pcm_ResetPercent, 0, 0);
  62.     end         { TPercentCtrl.Reset };
  63.  
  64.   end.
  65.